#include "stack.h"

#define MAXVAL 100	

static int sp = 0;
static double val[MAXVAL];

void push(double f)
{
	if(sp < MAXVAL)
		val[sp++] = f;
	else 
		printf("error: stack full, can't push %g \n", f);
}

// 弹出栈顶元素
double pop(void)
{
	if(sp > 0)
		return val[--val];
	else
	{
		printf("error: stack empty\n");
		return 0.0;
	}
}

// 获得栈顶元素
double peek(void)
{
	if(sp > 0)
		return val[sp - 1];
	else
		printf("error: stack empty\n");
	return 0.0;
}

// 清空栈 返回被清空的元素数
int clear()
{
	int n;
	if(sp > 0)
	{
		n = sp;
		sp = 0;
		return n;
	}
	else 
	{
		printf("error: stack empty\n");
		return 0;
	}
}

// 返回栈中元素的数量
int count(void)
{
	return sp;
}
